
package com.be.beadmin.design.service;

import com.be.beadmin.common.entity.PageEntity;
import com.be.beadmin.design.dto.input.ProductBomOverviewDto;
import com.be.beadmin.design.dto.output.ProductBomOverviewEx;
import com.be.beadmin.design.entity.StandFileInfo;
import com.be.beadmin.project.entity.BatchProduct;
import org.springframework.data.domain.Page;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
* @description 服务接口
* @author zmy
* @date 2023-02-22
**/
public interface ProductBomOverviewService {

    /**
    * 分页的查询接口
    * @param pageEntity
    * @return
    */
    Page<ProductBomOverviewEx> getProductBomOverviewByPage(PageEntity pageEntity);

    Page<ProductBomOverviewEx> getProductBomOverviewByBatchProductId(HttpServletRequest request,PageEntity pageEntity, String batchProductId);

    /**
    * @param productBomOverviewDto
    */
    void addProductBomOverview(ProductBomOverviewDto productBomOverviewDto);

    /**
    * @param productBomOverviewDto
    */
    void updateProductBomOverview(ProductBomOverviewDto productBomOverviewDto);

    /**
    * @param id
    */
    void delProductBomOverview(String id);

    /**
    * 删除多个角色
    * @param ids
    */
    void delProductBomOverviews (List<String> ids);

    void addBomByTemplate(HttpServletRequest request, String batchProductId, MultipartFile multipartFile) throws IOException;

    void addStandBomByTemplate(String standTypeCode,String standBomCode, int version,MultipartFile multipartFile) throws IOException;

    void analyzeBom(BatchProduct b , StandFileInfo standFileInfo) throws IOException;

    void confirmUpdate(List<ProductBomOverviewDto> ProductBomOverviewDtos);

    boolean checkTemplate(MultipartFile multipartFile) throws IOException;

    void change(List<String> ids,List<Integer> nums) throws ParseException;

    Page<ProductBomOverviewEx> getProductBomOverviewOfStandProduct( PageEntity pageEntity, String standTypeId);

    void analyzeStandBom(BatchProduct b, StandFileInfo bomFileInfo);

    Map<Object, Object> getProductBomOverviewAndReviewByPage(PageEntity pageEntity);
}